Naive Bayes Classifier হল একটি পরিসংখ্যান ভিত্তিক ক্লাসিফিকেশন অ্যালগরিদম যা বিশেষভাবে বায়েসিয়ান থিওরেম এর উপর ভিত্তি করে কাজ করে। এটি সহজ, দ্রুত এবং কার্যকরী একটি মেশিন লার্নিং ক্লাসিফিকেশন অ্যালগরিদম যা সাধারণত টেক্সট ক্লাসিফিকেশন, স্প্যাম ডিটেকশন, সেন্টিমেন্ট অ্যানালাইসিস ইত্যাদি কাজের জন্য ব্যবহৃত হয়।
Naive Bayes নামটি এসেছে দুটি কারণে:
- Naive: এটি অনুমান করে যে সমস্ত ফিচার একে অপর থেকে স্বাধীন (mutually independent)। এটি বাস্তবে হয়তো সত্য নয়, তবে এটি অ্যালগরিদমটিকে অত্যন্ত সহজ এবং দ্রুত কাজ করতে সাহায্য করে।
- Bayes: এটি বায়েসিয়ান থিওরেম ব্যবহার করে সম্ভাব্যতা গণনা করে।
Naive Bayes Classifier এর মূল ধারণা
Naive Bayes Classifier কাজ করে বায়েসিয়ান থিওরেম এর উপর, যা একটি শর্তাধীন সম্ভাবনা গণনা করে। বায়েসিয়ান থিওরেম নিম্নরূপ:
এখানে,
- = একটি ক্লাস -এর শর্তাধীন সম্ভাবনা, যেখানে হল ইনপুট ফিচারের সেট।
- = একটি ক্লাস -এর মধ্যে -এর শর্তাধীন সম্ভাবনা।
- = ক্লাস -এর প্রাথমিক সম্ভাবনা।
- = -এর সম্ভাবনা।
Naive Bayes-এ আমরা শর্তাধীন সম্ভাবনা এর উপর ভিত্তি করে ক্লাস -এর সম্ভাবনা অনুমান করি। তবে Naive Bayes একে অপরের থেকে স্বাধীন ফিচারগুলি ধরে নেয়, অর্থাৎ,
এখানে হল ইনপুট ফিচারের মান এবং হল ক্লাস।
Naive Bayes Classifier-এর বিভিন্ন প্রকার:
Naive Bayes Classifier এর তিনটি প্রধান ধরন রয়েছে:
- Gaussian Naive Bayes: এটি ধার্য করে যে প্রতিটি ফিচারের ভ্যালু গৌণ বন্টন (Gaussian Distribution) অনুসরণ করে। সাধারণত, এটি ধারাবাহিক (continuous) ডেটার জন্য ব্যবহৃত হয়।
- Multinomial Naive Bayes: এটি ক্যাটেগোরিক্যাল (categorical) ডেটার জন্য ব্যবহৃত হয়, বিশেষত টেক্সট ডেটা (যেমন, ডকুমেন্ট ক্লাসিফিকেশন, স্প্যাম ডিটেকশন)।
- Bernoulli Naive Bayes: এটি দুইটি শ্রেণী (binary features) নিয়ে কাজ করে, যেখানে ফিচারগুলি শুধুমাত্র ০ অথবা ১ হতে পারে।
Naive Bayes Classifier এর সুবিধা:
- সহজ এবং দ্রুত: এটি খুবই সিম্পল এবং দ্রুত অ্যালগরিদম, যেটি খুব কম সময়ে একটি মডেল তৈরি করতে সক্ষম।
- কম ডেটা প্রয়োজন: এটি কম ডেটায়ও ভাল ফলাফল প্রদান করতে পারে, বিশেষ করে বড় ডেটাসেটে।
- এফিশিয়েন্ট: এটি খুব দ্রুত প্রশিক্ষণ এবং ভবিষ্যদ্বাণী করতে পারে।
- কম্পিউটেশনাল কমপ্লেক্সিটি কম: অন্যান্য ক্লাসিফিকেশন অ্যালগরিদমের তুলনায় এটি কম্পিউটেশনালভাবে অনেক কমপ্লেক্স।
- প্রবণতামূলক ফলাফল: এটি নতুন ডেটা পয়েন্টের জন্য গতি এবং সরলতা প্রদান করতে সক্ষম।
Naive Bayes Classifier এর সীমাবদ্ধতা:
- নাইভী (Naive) ধারণা: এটি فرض করে যে সমস্ত ফিচার একে অপর থেকে স্বাধীন, যা বাস্তবে খুব কম সময়ে হয়। যদি ফিচারগুলির মধ্যে সম্পর্ক থাকে, তবে এটি সঠিক ফলাফল নাও দিতে পারে।
- ডেটা কুইটির ভ্যালু: Naive Bayes শুধুমাত্র সঠিকভাবে কাজ করে যদি ফিচারগুলি নির্ভুলভাবে প্রদত্ত হয় এবং তাদের মধ্যে খুব বেশি সম্পর্ক না থাকে।
- কমপ্লেক্স ফিচার: এটি অত্যন্ত কমপ্লেক্স ডেটা সেটের জন্য সঠিক কাজ নাও করতে পারে, যেমন- সেগুলির মধ্যে অনেকগুলি বৈশিষ্ট্য এবং সম্পর্ক থাকতে পারে।
Naive Bayes Classifier ব্যবহার উদাহরণ (Python):
এখানে একটি Multinomial Naive Bayes ব্যবহার করে scikit-learn লাইব্রেরির মাধ্যমে ক্লাসিফিকেশন উদাহরণ দেওয়া হল:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# উদাহরণস্বরূপ ডেটাসেট
data = {
'Feature1': [1, 2, 1, 3, 2, 3, 1, 2, 1, 3],
'Feature2': [2, 3, 2, 3, 1, 2, 3, 1, 2, 3],
'Label': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
}
# DataFrame তৈরি
df = pd.DataFrame(data)
# ফিচার এবং লেবেল আলাদা করা
X = df[['Feature1', 'Feature2']]
y = df['Label']
# ডেটা ভাগ করা (ট্রেনিং এবং টেস্টিং)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Naive Bayes মডেল তৈরি
nb = MultinomialNB()
# মডেল প্রশিক্ষণ
nb.fit(X_train, y_train)
# ভবিষ্যদ্বাণী করা
y_pred = nb.predict(X_test)
# একিউরেসি যাচাই
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
এই উদাহরণে, Multinomial Naive Bayes মডেল ব্যবহার করে ডেটা ক্লাসিফিকেশন করা হয়েছে এবং accuracy যাচাই করা হয়েছে।
সারাংশ
Naive Bayes Classifier একটি সহজ, দ্রুত এবং শক্তিশালী মেশিন লার্নিং অ্যালগরিদম, যা বায়েসিয়ান থিওরেম এর উপর ভিত্তি করে কাজ করে এবং ফিচারের স্বাধীনতা অনুমান করে। এটি বিভিন্ন প্রকারের ডেটার জন্য কার্যকরী হতে পারে, বিশেষ করে ক্যাটেগোরিক্যাল ডেটা এবং টেক্সট ডেটার জন্য। তবে এটি ফিচারের মধ্যে সম্পর্ক না থাকার অনুমান করে, যা কিছু ক্ষেত্রে সীমাবদ্ধ হতে পারে।
Read more